14.7.1. Dados do Produto
14.7.1.3. Detalhe Produtos/Serviços 4.00 [11-07-21]
14.7.1.2. Crédito Presumido [19-03-24]
« Anterior
14.7.1.4. Informações da DI 3.10 [09-03-24]
Próximo »

14.7.1.3. Detalhe Produtos/Serviços 4.00 [11-07-21]

Funcionalidade para gerar o XML do grupo do detalhamento de produtos e Serviços da NF-e 4.00

Assinatura

string produto400(string cProd, string cEAN, string xProd, string NCM, string NVE_Opc, string CEST_Opc, string indEscala_Opc, string CNPJFab_Opc, string cBenef_Opc, string EXTIPI, int CFOP, string uCom, string qCom, string vUnCom, double vProd, string cEANTrib, string uTrib, string qTrib, string vUnTrib, double vFrete, double vSeg,double vDesc, double vOutro, int indTot, string DI, string detExport_Opc, string DetEspecifico, string xPed, string nItemPed, string nFCI_Opc, string rastro_Opc)

Descrição:

Funcionalidade para gerar o XML do grupo do detalhamento de produtos e Serviços da NF-e/NFC-e na versão 4.00 do leiaute da NF-e.

ADEQUAÇÃO NT 2020/005 NOVO

A NT 2020/005 acrescentou as tags cBarra e cBarraTrib para permitir a informação de códigos de barras diferente do padrão GTIN.

Para evitar a alteração da funcionalidade, adotamos a "solução técnica" (gambiarra) de passar os novos códigos no cEAN e cEANTrib, exemplo:

cEAN = "7891058008628" <=== informar somente o cEAN, assim cEAN="7891058008628" a cBarra=""

cEAN = "7891058008628|1234" <=== informar cEAN e cBarras, assim cEAN="7891058008628" a cBarra="1234"

cEANTrib = "7891058008628" <=== informar somente o cEANTrib, assim cEANTrib="7891058008628" a cBarraTrib=""

cEANTrib = "7891058008628|1234" <=== informar cEANTrib e cBarraTrib, assim cEANTrib="7891058008628" a cBarraTrib="1234"

Parâmetros:

nome tipo tam. obrig. descrição
cProd string 1-60 sim informar o código do produto ou serviço. Preencher com CFOP, caso se trate de itens não relacionados com mercadorias/produtos e que o contribuinte não possua codificação própria. Formato ”CFOP9999”.
cEAN string 0,8,12,13,14 sim informar o GTIN (Global Trade Item Number) do produto, antigo código EAN ou código de barras. Preencher com o código GTIN-8, GTIN-12, GTIN-13 ou GTIN-14 (antigos códigos EAN, UPC e DUN-14), informar "SEM GTIN" quando o produto não possuir este código.
(campo ALTERADO para permitir a informação do cBarra)
cBarra
- para informar o código de Barras diferente do GTIN, informe o código desejado após o cEAN separado por pipe (|), ex.: cEAN= "cEAN|cBarra", que a funcionalidade irá separar as informações. [11-07-21]
xProd string 1-120 sim informar a descrição do produto ou serviço.
NCM string 2,8 sim informar o Código NCM com 8 dígitos; informar a posição do capítulo do NCM (as duas primeiras posições do NCM) quando a operação não for de comércio exterior (importação/ exportação) ou o produto não seja tributado pelo IPI; se for serviços, informar 00.
NVE_Opc string - não informar com a Codificação NVE - Nomenclatura de Valor Aduaneiro e Estatística, Codificação opcional que detalha alguns NCM [23-12-13]
CEST_Opc string 7 não informar Código Especificador da Substituição Tributária - CEST, que estabelece a sistemática de uniformização e identificação das mercadorias e bens passíveis de sujeição aos regimes de substituição tributária e de antecipação de recolhimento do ICMS.
indEscala_Opc string 1 não informar o Indicador de Escala Relevante.
Indicador de Produção em escala relevante, conforme Cláusula 23 do Convenio ICMS 52/2017:
S - Produzido em Escala Relevante;
N – Produzido em Escala NÃO Relevante. [15-08-17]
CNPJFab_Opc string 14 não informar o CNPJ do Fabricante da Mercadoria, obrigatório para produto em escala NÃO relevante. [15-08-17]
cBenef_Opc string 10 não informar o Código de Benefício Fiscal utilizado pela UF, aplicado ao item.
Obs.: Deve ser utilizado o mesmo código adotado na EFD e outras declarações, nas UF que o exigem. [15-08-17]
EXTIPI string 2,3 não informar de acordo com o código EX da TIPI se houver para o NCM do produto.
CFOP inteiro 4 sim informar o CFOP - Código Fiscal de Operações e Prestações.
uCOM string 1-6 sim informar a unidade de comercialização do produto (Ex. pc, und, dz, kg, etc.).
qCOM string 15,4 sim informar a quantidade de comercialização do produto já formatado com ponto decimal. A quantidade de casas decimais pode variar de 0 a 4.
vUnCOM string 21,10 sim Informar o valor unitário de comercialização do produto já formatado com ponto decimal, campo meramente informativo, o contribuinte pode utilizar a precisão desejada (0-10 decimais). Para efeitos de cálculo, o valor unitário será obtido pela divisão do valor do produto pela quantidade comercial.
vProd duplo 15,2 sim informar o valor total bruto do produto ou serviços.
cEANTrib string 0,8,12,13,14 sim informar o GTIN (Global Trade Item Number) da unidade de tributação do produto, antigo código EAN ou código de barras. Preencher com o código GTIN-8, GTIN-12, GTIN-13 ou GTIN-14 (antigos códigos EAN, UPC e DUN-14), informar "SEM GTIN" quando o produto não possuir este código.
(campo ALTERADO para permitir a informação do cBarraTrib)
cBarraTrib
- para informar o código de Barras da unidade tributável diferente do GTIN, informe o código desejado após o cEANTrib separado por pipe (|), ex.: cEANTrib = "cEANTrib|cBarraTrib", que a funcionalidade irá separar as informações. [11-07-21]
uTrib string 1-6 sim informar a unidade de tributação do produto (Ex. pc, und, dz, kg, etc.).
qTrib string 15,4 sim informar a quantidade de tributação do produto já formatado com ponto decimal. A quantidade de casas decimais pode variar de 0 a 4.
vUnTrib string 21,10 sim Informar o valor unitário de tributação do produto já formatado com ponto decimal, campo meramente informativo, o contribuinte pode utilizar a precisão desejada (0-10 decimais). Para efeitos de cálculo, o valor unitário será obtido pela divisão do valor do produto pela quantidade tributável.
vFrete duplo 15,2 não informar o valor do Frete, o Frete deve ser rateado entre os itens de produto.
vSeg duplo 15,2 não informar o valor do Seguro, o Seguro deve ser rateado entre os itens de produto.
vDesc duplo 15,2 não informar o valor do desconto do item de produto ou serviço.
vOutro duplo 15,2 não informar o valor de outras despesas acessórias do item de produto ou serviço.
indTot inteiro - sim Este campo deverá ser preenchido com: 0 - o valor do item (vProd) não compõe o valor total da NF-e (vProd) 1 - o valor do item (vProd) compõe o valor total da NF-e.
DI string - não informar o XML do grupo DI - dados da importação nas operações de importação.
detExport_Opc string - não informar com as informações do detalhamento da exportação [23-12-13]
DetEspecifico string - não informar o XML do grupo veicProd - detalhamento de específico de veículos novos ou com o XML do grupo med - detalhamento de específico de medicamentos ou com o XML do grupo arma - detalhamento de específico de armamentos ou com o XML do grupo comb - detalhamento de específico de combustíveis e lubrificantes ou com o XML do grupo RECOPI - informação do RECOPI
xPed string 1-15 não informar o número do pedido de compra, o campo é de livre uso do emissor.
nItemPed string 1-6 não informar o número do item do pedido de compra, o campo é de livre uso do emissor.
nFCI_Opc string 36 não informar o Número de controle da FCI - Ficha de Conteúdo de Importação com formatação, ex.: B01F70AF-10BF-4B1F-848C-65FF57F616FE [28-09-13]
rastro_Opc string - não informar o grupo de Detalhamento de produto sujeito a rastreabilidade. [15-08-17]

Importante

Os tipos dos parâmetros: qCom, qTrib, vUnCom e vUnTrib foram alterados para string, pois a quantidade de casas decimais passou a ser variável. Para dar maior flexibilidade, o usuário já deve passar os valores com a quantidade de casas decimais que desejar para a DLL, vale observar que o ponto decimal deve ser o ponto decimal.

Histórico de atualização:

Diagrama:

DiagramaProduto

Dica

Os campos com contorno tracejado podem ser omitidos se a operação não exigir a informação.

Os grupos XML veicProd (detalhamento específico de veículos novos), med (detalhamento específico de medicamentos e insumos), arma (detalhamento específico de armamentos), comb (detahamento específico de combustíveis e lubrificantes) e RECOPI (informação do RECOPI) são grupos XML que devem ser gerados em separado e são mutuamente exclusivos. Apenas um deles deve ser informado no parâmetro DetEspecifico.

Retorno:

Um string com o grupo XML do detalhe do Produto ou Serviço

XML:

Exemplo de XML do produto simples

<prod>
        <cProd>00001</cProd>
        <cEAN/>
        <xProd>Agua Mineral</xProd>
        <NCM>25</NCM>
        <CFOP>5101</CFOP>
        <uCom>dz</uCom>
        <qCom>1000</qCom>
        <vUnCom>1</vUnCom>
        <vProd>1000.00</vProd>
        <cEANTrib/>
        <uTrib>und</uTrib>
        <qTrib>12000</qTrib>
        <vUnTrib>1</vUnTrib>
        <intTot>1</intTot>
</prod>

Exemplo de XML do produto com detalhamento específico de medicamento

 
<prod>
      <cProd>402729</cProd>
      <cEAN>7891058008628</cEAN>
      <xProd>DORFLEX 24X10 CP CH</xProd>
      <NCM>30049012</NCM>
      <genero>30</genero>
      <CFOP>5409</CFOP>
      <uCom>CX</uCom>
      <qCom>2</qCom>
      <vUnCom>25.4850</vUnCom>
      <vProd>50.97</vProd>
      <cEANTrib>7891058008628</cEANTrib>
      <uTrib>CX</uTrib>
      <qTrib>2</qTrib>
      <vUnTrib>25.4850</vUnTrib>
      <intTot>1</intTot>
      <med>
           <nLote>602958</nLote>
           <dVal>2008-05-01</dVal>
           <vPMC>80.73</vPMC>
      </med>
</prod>

Exemplo de XML do produto simples

<prod>
        <cProd>00001</cProd>
        <cEAN/>
        <xProd>Agua Mineral</xProd>
        <NCM>25</NCM>
        <CFOP>5101</CFOP>
        <uCom>dz</uCom>
        <qCom>1000</qCom>
        <vUnCom>1</vUnCom>
        <vProd>1000.00</vProd>
        <cEANTrib/>
        <uTrib>und</uTrib>
        <qTrib>12000</qTrib>
        <vUnTrib>1</vUnTrib>
        <intTot>1</intTot>
        <nFCI>B01F70AF-10BF-4B1F-848C-65FF57F616FE</nFCI>
</prod>

Exemplo de XML do produto com NVE

<prod>
        <cProd>00001</cProd>
        <cEAN/>
        <xProd>Camisas de malha, de uso masculino</xProd>
        <NCM>61051000</NCM>
        <NVE>AA0001</NVE>
        <NVE>AB0002</NVE>
        <NVE>AC0002</NVE>
        <CFOP>5101</CFOP>
        <uCom>pc</uCom>
        <qCom>100</qCom>
        <vUnCom>1</vUnCom>
        <vProd>1000.00</vProd>
        <cEANTrib/>
        <uTrib>und</uTrib>
        <qTrib>100</qTrib>
        <vUnTrib>1</vUnTrib>
        <intTot>1</intTot>
        <nFCI>B01F70AF-10BF-4B1F-848C-65FF57F616FE</nFCI>
</prod>

Importante

O trecho do XML foi formatado para uma melhor visualização, a mensagem original não tem formatação.

Vale observar que a formatação pode corromper a assinatura digital, além de ocupar espaço e ser desnecessária, pois os browser exibem formatado.

Exemplos de uso:

Visual Basic 6.0

' inicializar variáveis
'...............................................

Dim objNFeUtil As Object
'
Set objNFeUtil = CreateObject("NFe_Util_2G.util")
'
'
'================grupo de detalhe do produto (grupo I01 do Manual de integração - páginas 95)=======================
'
'
prod_cProd = "001152"                       '  código do produto
prod_cEAN = "7897844200115||123456"         '  código EAN (0, 8,12, 13 ou 14 caracteres), o conteúdo pode ser omitido se não tiver EAN
prod_xProd = "Cola Especial para EPS"       '  código do produto, espaços em branco consecutivos ou no início ou fim do campo podem
                                            '  gerar erro de Schema XML, além de caracteres reservados do XML <>&""
prod_NCM = "35"                             '  código NCM, pode ser omitido se não sujeito ao IPI
prod_NVE = ""                               '  codificação NVE - Nomenclatura de Valor Aduaneiro e Estatística, "complemento" NCM
prod_CEST = ""                              '  codificação Código Especificador da Substituição Tributária - CEST
prod_indEscala = ""                         '  indicador de escala relevante
prod_CNPJFab = ""                           '  CNPJ do fabricante da mercadorias
prod_cBenef = ""                            '  código do benefício fiscal na UF aplicado ao item
prod_ExTIPI = ""                            '  ExTipi, especialização do código NCM, informar apenas se existir
prod_CFOP = "5403"                          '  CFOP do operação, causa erro de XML se informado um código inexistente
prod_uCOM = "UN"                            '  unidade de comercialização
prod_qCom = "10"                            '  quantidade de comercialização
prod_vUnCom = "1"                           '  valor IdeContigenciaário de comercialização, campo de mera demonstração deve ser o resultado da
                                            '  da divisão do vProd / qCom
prod_vProd = 10                             '  valor do total do item
prod_cEANTrib = "7897844200115"             '  código EAN (0, 8,12, 13 ou 14 caracteres), o conteúdo pode ser omitido se não tiver EAN,
                                            '  em geral é o mesmo código do EAN de comercialização
prod_uTrib = "UN"                           '  unidade de tributação, na maioria dos casos é idêntico  ao vUnCom, pode diferente nos
                                            '  casos de produtos sujeitos a ST em que a unidade de pauta é diferente da unidade de
                                            '  comercialização
                                            '  Ex. unidade de comercialização = 1 pack de lata de cerveja => unidade de tributação =
                                            '  1 lata (preço de pauta)
prod_qTrib = "10"                           '  quantidade de comercialização
prod_vUnTrib = "1"                          '  valor IdeContigenciaário de tributação, campo de mera demonstração deve ser o resultado da
                                            '  divisão do vProd / qTrib
prod_vFrete = 0                             '  valor do frete, se cobrado do cliente deve ser rateado entre os itens de produto
prod_vSeguro = 0                            '  valor do seguro, se cobrado do cliente deve ser rateado entre os itens de produto
prod_vDesc = 0                              '  valor do desconto concedido
prod_vOutro = 0                             '  valor de outras despesas
prod_indTot = 1                             '  indicador se o valor do item será totalizado no valor total dos produtos
prod_DI = ""                                '  dados da importação, informar apenas no caso de NF de entrada (importação), para montar
                                            '  o grupo utilize a funcionalidade DI
prod_DetExp = ""                            '  detalhamento das exportações
                                            '  combustíveis, para montar o grupo utilizar a funcionalidade correspondente
prod_xPed = ""                              '  número do pedido, uso exclusivo do usuário
prod_nItemPed = "0"                         '  número do item do pedido, uso exclusivo do usuário
prod_nFCI = ""                              '  número da FCI
prod_DetEspec = ""                          '  dados específicos, informar para medicamento, veículos novos, armamentos e
                                            '  combustíveis, para montar o grupo utilizar a funcionalidade correspondente
prod_rastro = ""                            '  dados da rastreabilidade

 
det_Prod = objNFeUtil.produto400(prod_cProd, _
                                 prod_cEAN, _
                                 prod_xProd, _
                                 prod_NCM, prod_NVE, _
                                 prod_CEST, prod_indEscala, prod_CNPJFab, prod_cBenef, prod_ExTIPI, _
                                 prod_CFOP, _
                                 prod_uCOM, prod_qCom, prod_vUnCom, _
                                 prod_vProd, _
                                 prod_cEANTrib, prod_uTrib, prod_qTrib, prod_vUnTrib, _
                                 prod_vFrete, prod_vSeguro, prod_vDesc, prod_vOutro, _
                                 prod_indTot, _
                                 prod_DI, prod_DetExp, prod_DetEspec, _
                                 prod_xPed, prod_nItemPed, prod_nFCI, prod_rastro)
 
MsgBox det_Prod, vbInformation, "Informação"

Exemplos de uso:

Delphi

 
procedure TForm1.Button5Click(Sender: TObject);
 
var
 
 
det_Prod, prod_cProd, prod_cEAN, prod_xProd, prod_NCM, prod_NVE, prod_CEST, prod_indEscala, prod_CNPJFab, prod_cBenef, prod_ExTIPI : widestring;
prod_CFOP, prod_uCOM, prod_qCom, prod_vUnCom : widestring;
prod_vProd: currency;
prod_cEANTrib, prod_uTrib, prod_qTrib, prod_vUnTrib : widestring;
prod_vFrete, prod_vSeguro, prod_vDesc, prod_vOutro : currency;
prod_indTot : integer;
prod_DI, prod_DetExp, prod_DetEspec : widestring;
prod_xPed, prod_nItemPed, prod_nFCI, prod_rastro : widestring;
 
Util: OleVariant;
 
begin
 
//
//================grupo de detalhe do produto (grupo I01 do Manual de integração - páginas 95)=======================
//
 
prod_cProd := '001152';                       //  código do produto
prod_cEAN := '7897844200115||123456';         //  código EAN (0, 8,12, 13 ou 14 caracteres), o conteúdo pode ser omitido se não tiver EAN
prod_xProd := 'Cola Especial para EPS';       //  código do produto, espaços em branco consecutivos ou no início ou fim do campo podem
                                              //  gerar erro de Schema XML, além de caracteres reservados do XML <>&''
prod_NCM := '35';                             //  código NCM, pode ser omitido se não sujeito ao IPI
prod_NVE := '';                               //  codificação NVE - Nomenclatura de Valor Aduaneiro e Estatística, 'complemento' NCM
prod_CEST := '';                              //  codificação Código Especificador da Substituição Tributária - CEST
prod_indEscala := '';                         //  indicador de escala relevante
prod_CNPJFab := '';                           //  CNPJ do fabricante da mercadorias
prod_cBenef := '';                            //  código do benefício fiscal na UF aplicado ao item
prod_ExTIPI := '';                            //  ExTipi, especialização do código NCM, informar apenas se existir
prod_CFOP := '5403';                          //  CFOP do operação, causa erro de XML se informado um código inexistente
prod_uCOM := 'UN';                            //  unidade de comercialização
prod_qCom := '10';                            //  quantidade de comercialização
prod_vUnCom := '1';                           //  valor unitário de comercialização, campo de mera demonstração deve ser o resultado da
                                              //  da divisão do vProd / qCom
prod_vProd := 10;                             //  valor do total do item
prod_cEANTrib := '7897844200115';             //  código EAN (0, 8,12, 13 ou 14 caracteres), o conteúdo pode ser omitido se não tiver EAN,
                                              //  em geral é o mesmo código do EAN de comercialização
prod_uTrib := 'UN';                           //  unidade de tributação, na maioria dos casos é idêntico  ao vUnCom, pode diferente nos
                                              //  casos de produtos sujeitos a ST em que a unidade de pauta é diferente da unidade de
                                              //  comercialização
                                              //  Ex. unidade de comercialização := 1 pack de lata de cerveja :=> unidade de tributação :=
                                              //  1 lata (preço de pauta)
prod_qTrib := '10';                           //  quantidade de comercialização
prod_vUnTrib := '1';                          //  valor unitário de tributação, campo de mera demonstração deve ser o resultado da
                                              //  divisão do vProd / qTrib
prod_vFrete := 0;                             //  valor do frete, se cobrado do cliente deve ser rateado entre os itens de produto
prod_vSeguro := 0;                            //  valor do seguro, se cobrado do cliente deve ser rateado entre os itens de produto
prod_vDesc := 0;                              //  valor do desconto concedido
prod_vOutro := 0;                             //  valor de outras despesas
prod_indTot := 1;                             //  indicador se o valor do item será totalizado no valor total dos produtos
prod_DI := '';                                //  dados da importação, informar apenas no caso de NF de entrada (importação), para montar
                                              //  o grupo utilize a funcionalidade DI
prod_DetExp := '';                            //  detalhamento das exportações
                                              //  combustíveis, para montar o grupo utilizar a funcionalidade correspondente
prod_xPed := '';                              //  número do pedido, uso exclusivo do usuário
prod_nItemPed := '0';                         //  número do item do pedido, uso exclusivo do usuário
prod_nFCI := '';                              //  número da FCI
prod_DetEspec := '';                          //  dados específicos, informar para medicamento, veículos novos, armamentos e
                                              //  combustíveis, para montar o grupo utilizar a funcionalidade correspondente
prod_rastro := '';                            //  dados da rastreabilidade
 
 
 
Util := CreateOleObject('NFe_Util_2G.util');  // instancia DLL
 
det_Prod := Util.produto400(prod_cProd,
                            prod_cEAN,
                            prod_xProd,
                            prod_NCM, prod_NVE,
                            prod_CEST, prod_indEscala, prod_CNPJFab, prod_cBenef, prod_ExTIPI,
                            prod_CFOP,
                            prod_uCOM, prod_qCom, prod_vUnCom,
                            prod_vProd,
                            prod_cEANTrib, prod_uTrib, prod_qTrib, prod_vUnTrib,
                            prod_vFrete, prod_vSeguro, prod_vDesc, prod_vOutro,
                            prod_indTot,
                            prod_DI, prod_DetExp, prod_DetEspec,
                            prod_xPed, prod_nItemPed, prod_nFCI, prod_rastro);
 
MessageDlg( det_Prod, mtInformation, [mbOk], 0);
 
end;

Importante

Se houver mais de um item de detalhe, o usuário deve concatenar os detalhes.

14.7.1.3. Detalhe Produtos/Serviços 4.00 [11-07-21]
14.7.1. Dados do Produto
« Anterior
14.7.1.2. Crédito Presumido [19-03-24]
Próximo »
14.7.1.4. Informações da DI 3.10 [09-03-24]